home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2006 May / PCWMAY06.iso / Software / Trial / ConceptDraw NetDiagrammer / data1.cab / Samples__Basic / SimpleDrawing / DrawDiagrams / DrawDiagram.cdb next >
Text File  |  2006-02-08  |  5KB  |  82 lines

  1. Sub DrawDiagram()
  2.     Const Pi As Double         = 3.14159265    '╨₧╨┐╤Ç╨╡╨┤╨╡╨╗╨╡╨╜╨╕╨╡ ╨║╨╛╨╜╤ü╤é╨░╨╜╤é╤ï Pi
  3.     Const cdStep As Double        = Pi/20        '╨ù╨░╨┤╨░╨╜╨╕╨╡ ╤ê╨░╨│╨░ ╨╕╨╖╨╝╨╡╨╜╨╡╨╜╨╕╤Å ╨║╨╛╨╛╤Ç╨┤╨╕╨╜╨░╤é╤ï X ╨┐╤Ç╨╕ ╨┐╨╛╤ü╤é╤Ç╨╛╨╡╨╜╨╕╨╕ ╨│╤Ç╨░╤ä╨╕╨║╨░
  4.     Const PiDiv2Neig As Double     = Pi/2 - cdStep    '╨¥╨╕╨╢╨╜╤Å╤Å ╨╛╨║╤Ç╨╡╤ü╤é╨╜╨╛╤ü╤é╤î ╤é╨╛╤ç╨║╨╕ Pi/2, ╨╕╤ü╨┐╨╛╨╗╤î╨╖╤â╨╡╤é╤ü╤Å ╨┐╤Ç╨╕ ╨┐╨╛╤ü╤é╤Ç╨╛╨╡╨╜╨╕╨╕ ╨│╤Ç╨░╤ä╨╕╨║╨░ ╤ä╤â╨╜╨║╤å╨╕╨╕ y=tn(x) ╨┤╨╗╤Å ╨╕╨╖╨╛╨╗╤Å╤å╨╕╨╕ ╤é╨╛╤ç╨║╨╕ ╤Ç╨░╨╖╤Ç╤ï╨▓╨░
  5.     Const X0 As Double        = 1000        '╨É╨▒╤ü╤å╨╕╤ü╤ü╨░ ╤å╨╡╨╜╤é╤Ç╨░ ╨║╨╛╨╛╤Ç╨┤╨╕╨╜╨░╤é ╨│╤Ç╨░╤ä╨╕╨║╨░.
  6.     Const Y0 As Double        = 1500        '╨₧╤Ç╨┤╨╕╨╜╨░╤é╨░ ╤å╨╡╨╜╤é╤Ç╨░ ╨║╨╛╨╛╤Ç╨┤╨╕╨╜╨░╤é ╨│╤Ç╨░╤ä╨╕╨║╨░.
  7.     Const cdScale As Double        = 200            '╨£╨░╤ü╤ê╤é╨░╨▒ ╤ü╤é╤Ç╨╛╤Å╤ë╨╡╨│╨╛╤ü╤Å ╨│╤Ç╨░╤ä╨╕╨║╨░. ╨ò╨┤╨╕╨╜╨╕╤å╨░ ╤ê╨║╨░╨╗╤ï ╨│╤Ç╨░╤ä╨╕╨║╨░ ╤ü╨╛╨╛╤é╨▓╨╡╤é╤ü╤é╨▓╤â╨╡╤é 200 ╤Ä╨╜╨╕╤é╨░╨╝ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░.
  8.     Dim active_page As Page        '╨í╤ü╤ï╨╗╨║╨░ ╨╜╨░ ╨░╨║╤é╨╕╨▓╨╜╤â╤Ä ╤ü╤é╤Ç╨░╨╜╨╕╤å╤â ╨╜╨╛╨▓╨╛╨│╨╛ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░.
  9.     Dim new_Shape As Shape        '╨í╤ü╤ï╨╗╨║╨░ ╨╜╨░ ╨╛╨▒╤è╨╡╨║╤é-╤ê╤ì╨╣╨┐, ╨┐╤Ç╨╡╨┤╤ü╤é╨░╨▓╨╗╤Å╤Ä╤ë╨╕╨╣ ╨╜╨╛╨▓╤â╤Ä ╨┐╨╛╤ü╤é╤Ç╨╛╨╡╨╜╨╜╤â╤Ä ╨┤╨╕╨░╨│╤Ç╨░╨╝╨╝╤â.
  10.     Dim dX As Double            '╨Ü╨╛╨╛╤Ç╨┤╨╕╨╜╨░╤é╨░ X ╤ü╨╗╨╡╨┤╤â╤Ä╤ë╨╡╨╣ ╨╛╨┐╤Ç╨╡╨┤╨╡╨╗╤Å╤Ä╤ë╨╡╨╣╤ü╤Å ╤é╨╛╤ç╨║╨╕ ╨┤╨╕╨░╨│╤Ç╨░╨╝╨╝╤ï.
  11.  
  12.     '╨ƒ╨╛╨╗╤â╤ç╨░╨╡╨╝ ╤ü╤ü╤ï╨╗╨║╤â ╨╜╨░ ╨░╨║╤é╨╕╨▓╨╜╤â╤Ä ╤ü╤é╤Ç╨░╨╜╨╕╤å╤â ╤é╨╡╨║╤â╤ë╨╡╨│╨╛ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░. ╨ÿ╤ü╨┐╨╛╨╗╤î╨╖╤â╨╡╨╝ ╨│╨╗╨╛╨▒╨░╨╗╤î╨╜╤â╤Ä ╨┐╨╡╤Ç╨╡╨╝╨╡╨╜╨╜╤â╤Ä thisDoc
  13.     '╨┤╨╗╤Å ╨┤╨╛╤ü╤é╤â╨┐╨░ ╨║ ╨╛╨▒╤è╨╡╨║╤é╤â Document.
  14.     Set active_page = thisDoc.ActivePage 
  15.     
  16.     '╨ƒ╨╛╨╗╤â╤ç╨░╨╡╨╝ ╨║╨╛╨╗╨╕╤ç╨╡╤ü╤é╨▓╨╛ ╤ê╤ì╨╣╨┐╨╛╨▓ ╨╜╨░ ╨░╨║╤é╨╕╨▓╨╜╨╛╨╣ ╤ü╤é╤Ç╨░╨╜╨╕╤å╨╡ ╨░╨║╤é╨╕╨▓╨╜╨╛╨│╨╛ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░
  17.     iShapesCount = active_page.ShapesNum()
  18.     '╨₧╤ç╨╕╤ë╨░╨╡╨╝ ╤ü╤é╤Ç╨░╨╜╨╕╤å╤â ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░ ╨╛╤é ╨▓╤ü╨╡╤à ╤ê╤ì╨╣╨┐╨╛╨▓, ╨╜╨╡ ╨╜╨░╤à╨╛╨┤╤Å╤ë╨╕╤à╤ü╤Å ╨╜╨░ Layer "Axis".
  19.     '╨Æ╤ï╨┐╨╛╨╗╨╜╤Å╨╡╨╝ ╤å╨╕╨║╨╗ ╨┤╨╗╤Å ╨▓╤ü╨╡╤à ╤ê╤ì╨╣╨┐╨╛╨▓ ╤ü╤é╤Ç╨░╨╜╨╕╤å╤ï. ╨ƒ╤Ç╨╕ ╨╕╨╜╨╕╤å╨╕╨░╨╗╨╕╨╖╨░╤å╨╕╨╕
  20.     '╨╖╨╜╨░╤ç╨╡╨╜╨╕╨╡ ╤ü╤ç╨╡╤é╤ç╨╕╨║╨░ ╤ü╤é╨░╨╜╨╛╨▓╨╕╤é╤ü╤Å ╤Ç╨░╨▓╨╜╤ï╨╝ ╨║╨╛╨╗╨╕╤ç╨╡╤ü╤é╨▓╤â ╤ê╤ì╨╣╨┐╨╛╨▓ ╨╜╨░ ╨░╨║╤é╨╕╨▓╨╜╨╛╨╣ ╤ü╤é╤Ç╨░╨╜╨╕╤å╨╡
  21.     '╨░╨║╤é╨╕╨▓╨╜╨╛╨│╨╛ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░. ╨ù╨░╤é╨╡╨╝ ╨╖╨╜╨░╤ç╨╡╨╜╨╕╨╡ ╤ü╤ç╨╡╤é╤ç╨╕╨║╨░ ╤â╨╝╨╡╨╜╤î╤ê╨░╨╡╤é╤ü╤Å ╨┤╨╛ 1 ╤ü ╤ê╨░╨│╨╛╨╝ -1.
  22.     '╨ò╤ü╨╗╨╕ ╨▒╤ï ╨╖╨╜╨░╤ç╨╡╨╜╨╕╨╡ ╤ü╤ç╨╡╤é╤ç╨╕╨║╨░ ╨╕╨╖╨╝╨╡╨╜╤Å╨╗╨╛╤ü╤î ╨╛╤é 1 ╨┤╨╛ iShapesCount, ╨┐╨╛╤ü╨╗╨╡ ╤â╨┤╨░╨╗╨╡╨╜╨╕╤Å 
  23.     '╤ê╤ì╨╣╨┐╨░ ╨┐╤Ç╨╛╨╕╤ü╤à╨╛╨┤╨╕╨╗╨░ ╨▒╤ï ╨┐╨╡╤Ç╨╡╨╕╨╜╨┤╨╡╨║╤ü╨░╤å╨╕╤Å ╨╛╤ü╤é╨░╨╗╤î╨╜╤ï╤à ╨╛╨▒╤è╨╡╨║╤é╨╛╨▓, ╨╕ ╨╛╨▒╤Ç╨░╤ë╨╡╨╜╨╕╤Å ╨║ ╨╛╨▒╤è╨╡╨║╤é╨░╨╝
  24.     '╨┐╨╛ ╤â╨╢╨╡ ╨╜╨╡╤ü╤â╤ë╨╡╤ü╤é╨▓╤â╤Ä╤ë╨╡╨╝╤â ╨╕╨╜╨┤╨╡╨║╤ü╤â.
  25.     For i=iShapesCount To 1 Step -1 
  26.         '╨ò╤ü╨╗╨╕ ╤ê╤ì╨╣╨┐ ╨╜╨╡ ╨╜╨░╤à╨╛╨┤╨╕╤é╤ü╤Å ╨╜╨░ Layer "Axis", ╤â╨┤╨░╨╗╤Å╨╡╨╝ ╨╡╨│╨╛.
  27.         If thisDoc.LayerByID(active_page.Shape(i).Layer).Name <> "Axis" Then
  28.             active_page.RemoveShape(i)
  29.         End If
  30.     Next    
  31.     
  32.     
  33.     '╨¥╨░╤ç╨╕╨╜╨░╨╡╨╝ ╨┐╨╛╤ü╤é╤Ç╨╛╨╡╨╜╨╕╨╡ ╨│╤Ç╨░╤ä╨╕╨║╨░. ╨ô╤Ç╨░╤ä╨╕╨║ ╨░╨┐╨┐╤Ç╨╛╨║╤ü╨╕╨╝╨╕╤Ç╤â╨╡╤é╤ü╤Å ╨┐╨╛╨╗╨╕╨│╨╛╨╜╨╛╨╝.
  34.     '╨í╤é╤Ç╨╛╨╕╨╝ ╨╛╨┤╨╕╨╜ ╨┐╨╡╤Ç╨╕╨╛╨┤ [-Pi;Pi] ╨┐╨╡╤Ç╨╕╨╛╨┤╨╕╤ç╨╡╤ü╨║╨╛╨╣ ╤ä╤â╨╜╨║╤å╨╕╨╕.
  35.     Set new_Shape = active_page.BeginShape()
  36.     '╨ú╤ü╤é╨░╨╜╨░╨▓╨╗╨╕╨▓╨░╨╡╨╝ ╨│╤Ç╨░╤ä╨╕╨║╤â ╤ê╨╕╤Ç╨╕╨╜╤â ╨╗╨╕╨╜╨╕╨╕ ╨╕ ╤å╨▓╨╡╤é, ╨╕╤ü╨┐╨╛╨╗╤î╨╖╤â╤Å ╨╕╨╜╨┤╨╡╨║╤ü╨╜╨╛╨╡ ╨┐╤Ç╨╡╨┤╤ü╤é╨░╨▓╨╗╨╡╨╜╨╕╨╡ ╤å╨▓╨╡╤é╨░.
  37.     new_Shape.PenWeight = 8
  38.     new_Shape.PenColor.Index = 1
  39.     '╨₧╨┐╤Ç╨╡╨┤╨╡╨╗╤Å╨╡╨╝ ╨┐╨╡╤Ç╨▓╤â╤Ä ╤é╨╛╤ç╨║╤â ╨│╤Ç╨░╤ä╨╕╨║╨░.
  40.     active_page.MoveTo(X0 - Pi* cdScale, Y0 - sin(-Pi)* cdScale)
  41.     For dX=-Pi To Pi Step cdStep 
  42.         '╨í╤é╤Ç╨╛╨╕╨╝ ╤ü╨╡╨│╨╝╨╡╨╜╤é╤ï ╨┐╨╛╨╗╨╕╨│╨╛╨╜╨░. ╨ƒ╤Ç╨╕ ╤ì╤é╨╛╨╝ ╤ü╨╗╨╡╨┤╤â╨╡╤é ╤â╤ç╨╡╤ü╤é╤î, ╤ç╤é╨╛ ╨╛╤ü╤î ╨╛╤Ç╨┤╨╕╨╜╨░╤é ╨│╤Ç╨░╤ä╨╕╨║╨░ ╨╜╨░╨┐╤Ç╨░╨▓╨╗╨╡╨╜╨░
  43.         '╨┐╤Ç╨╛╤é╨╕╨▓╨╛╨┐╨╛╨╗╨╛╨╢╨╜╨╛ ╨╛╤ü╨╕ ╨╛╤Ç╨┤╨╕╨╜╨░╤é ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░.
  44.         active_page.LineTo(X0 + dX*cdScale, Y0 - sin(dX)*cdScale)
  45.     Next
  46.     '╨ù╨░╨▓╨╡╤Ç╤ê╨░╨╡╨╝ ╨┐╨╛╤ü╤é╤Ç╨╛╨╡╨╜╨╕╨╡ ╤ê╤ì╨╣╨┐╨░.
  47.     active_page.EndShape()    
  48.     
  49.     '╨É╨╜╨░╨╗╨╛╨│╨╕╤ç╨╜╨╛ ╤ü╤é╤Ç╨╛╨╕╨╝ ╨│╤Ç╨░╤ä╨╕╨║ ╤ä╤â╨╜╨║╤å╨╕╨╕ y=cos(x)
  50.     Set new_Shape = active_page.BeginShape()
  51.     new_Shape.PenWeight = 8
  52.     new_Shape.PenColor.Index = 12
  53.     active_page.MoveTo(X0 - Pi*cdScale, Y0 - cos(-Pi)*cdScale)
  54.     For dX=-Pi To Pi Step cdStep 
  55.         active_page.LineTo(X0 + dX*cdScale, Y0 - cos(dX)*cdScale)
  56.     Next 
  57.     active_page.EndShape()    
  58.  
  59.     '╨ƒ╨╛╤ü╤é╤Ç╨╛╨╡╨╜╨╕╨╡ ╨│╤Ç╨░╤ä╨╕╨║╨░ ╤ä╤â╨╜╨║╤å╨╕╨╕ y=arctn(x) ╨╜╨░ ╨┐╤Ç╨╛╨╝╨╡╨╢╤â╤é╨║╨╡ [-Pi;Pi]
  60.     Set new_Shape = active_page.BeginShape()
  61.     new_Shape.PenWeight = 8
  62.     new_Shape.PenColor.Index = 3
  63.     active_page.MoveTo(X0 - Pi*cdScale, Y0 - atn(-Pi)*cdScale)
  64.     For dX=-Pi To Pi Step cdStep 
  65.         active_page.LineTo(X0 + dX*cdScale, Y0 - atn(dX)*cdScale)
  66.     Next 
  67.     active_page.EndShape()    
  68.  
  69.     '╨ƒ╨╛╤ü╤é╤Ç╨╛╨╡╨╜╨╕╨╡ ╨│╤Ç╨░╤ä╨╕╨║╨░ ╤ä╤â╨╜╨║╤å╨╕╨╕ y=tn(x). ╨¡╤é╨░ ╤ä╤â╨╜╨║╤å╨╕╤Å ╨┐╨╡╤Ç╨╕╨╛╨┤╨╕╤ç╨╡╤ü╨║╨░╤Å ╤ü ╨┐╨╡╤Ç╨╕╨╛╨┤╨╛╨╝ Pi. 
  70.     '╨ƒ╨╛╤ü╨║╨╛╨╗╤î╨║╤â ╨╖╨╜╨░╤ç╨╡╨╜╨╕╨╡ ╤ä╤â╨╜╨║╤å╨╕╨╕ ╤ü╤é╤Ç╨╡╨╝╨╕╤é╤î╤ü╤Å ╨║ ╨▒╨╡╤ü╨║╨╛╨╜╨╡╤ç╨╜╨╛╤ü╤é╨╕ ╨┐╤Ç╨╕ x, ╤ü╤é╤Ç╨╡╨╝╤Å╤ë╨╡╨╝╤ü╤Å ╨║ -Pi/2 ╨╕ Pi/2,
  71.     '╨│╤Ç╨░╤ä╨╕╨║ ╤ü╤é╤Ç╨╛╨╕╤é╤ü╤Å ╤é╨╛╨╗╤î╨║╨╛ ╨╜╨░ ╨┐╤Ç╨╛╨╝╨╡╨╢╤â╤é╨║╨╡ [-PiDiv2Neig;PiDiv2Neig].
  72.     Set new_Shape = active_page.BeginShape()
  73.     new_Shape.PenWeight = 8
  74.     new_Shape.PenColor.Index = 5
  75.     active_page.MoveTo(X0 - PiDiv2Neig * cdScale, Y0 - tan(-PiDiv2Neig)*cdScale)
  76.     For dX=-PiDiv2Neig To PiDiv2Neig Step cdStep 
  77.         active_page.LineTo(X0 + dX*cdScale, Y0 - tan(dX)*cdScale)
  78.     Next 
  79.     active_page.EndShape()    
  80. End Sub
  81.  
  82.